home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 3: CDPD 3
/
Almathera Ten on Ten - Disc 3: CDPD3.iso
/
scope
/
151-175
/
scopedisk165
/
splitfile
/
splitfile.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-03-19
|
3KB
|
78 lines
/**************************************************************************
*
* SplitFile
*
* Written
* By Thomas C. DeVeau
* November 11, 1990
*
* This is Public Domain
**************************************************************************/
#include <libraries/dosextens.h>
#define BUFFSIZE 256 /* buffer size */
#define MAXSPLITSIZE 51200L /* max splitfile size - easier editing */
void main(argc,argv)
int argc;
char *argv[];
{
struct FileHandle *fh1, *fh2, *Open(); /* file handles */
int size1, size2, nfcnt = 0, pathok = 0;
char buffer[BUFFSIZE],nfbuf[BUFFSIZE]; /* buffer holds command line filename */
/* nfbuf holds splitfile names */
char dir[80]; /* path */
switch(argc)
{
case 1:
printf("Usage: SplitFile <file> [TO <path>]\n");
exit(1);
case 2:
break;
case 3:
printf("SplitFile Error: Invalid Path specification.\n");
exit(1);
case 4:
strcpy(&dir[0],argv[3]);
pathok = 1;
break;
default:
exit(1);
}
fh1 = Open(argv[1],MODE_OLDFILE); /* open the original file */
if(fh1 == 0) /* if won't open, show error */
{
printf("File \"%s\": Not Found.\n",argv[1]);
exit(1);
}
for(;;) /* loop forever until broken */
{
if(pathok) /* get splitfile name */
sprintf(&nfbuf[0],"%s%s.sf%d",dir,argv[1],nfcnt);
else
sprintf(&nfbuf[0],"%s.sf%d",argv[1],nfcnt);
fh2 = Open(&nfbuf[0],MODE_NEWFILE); /* open splitfile */
size1 = size2 = 0;
printf("Writing to file: %s\n",nfbuf);
while(size1 < MAXSPLITSIZE) /* check for splitfile size */
{
size2 = Read(fh1,buffer,BUFFSIZE); /* read from original file */
Write(fh2,buffer,size2); /* write to splitfile */
if(size2 < BUFFSIZE)
goto endit; /* if read less than needed, end program */
size1 += size2; /* add sizes to get max size */
}
Close(fh2); /* close the splitfile */
nfcnt++; /* increment splitfile count */
}
endit:
if(fh2) Close(fh2); /* if splitfile open, close it */
Close(fh1); /* close original file */
exit(1); /* end of program */
}